CMPINF 2100 Project Proposal¶

Vishruth Reddy¶

  • I will be training classification models to predict if a customer is going to purchase the tickets next year or not.

A. Motivation¶

1. Why did I choose this final project?¶

i. What interested me about it?¶

  • Sports analytics is something I want to pursue in the near future. Getting such an opportunity was difficult in the past. This opportunity, especially working on off-field analytics is something that every entertainment industry will value, especially when the viewership makes or breaks the industry. This will be a good learning curve.

ii. Was it the application?¶

  • Yes, the application in particular is what lured me to take up this project. It was a win-win, in terms of putting this on my portfolio and trying to get some experience related to the industry I want to join.

iii. Was it the aspect of the data?¶

  • The aspect didn't play much of a role as almost every dataset was data intensive so that wasn't a strong factor to decide the project.

2. How interested am I in this project?¶

  • I'm very interested to pursue this project. Infact, I chose this willingly and not by the process of elimination.

3. After exploring the data and working through how you would model the data in more detail, would you prefer to work on a different project?¶

  • I'm inclined to working on this project itself. I would like to make better sense out of this after learning to effectively clean the data set.

4. Do you find this application not interesting? Is it confusing? Is the application just not something you want to work on?¶

  • This project really intrigued me, especially the real-world application. I don't think I want to change it.

B. Predictive Modeling Discussion¶

1. Which problem am I working on?¶

  • Classification Problem

2. Which variables are inputs?¶

  • accountid, age, gender, distancemiles, direction, peak_drivetime, offpeak_drivetime, season, purchase_month, purchase_dow, price_type, price_level, ticket_count, price_per_ticket.

  • (Answer after performing a little more of EDA)

3. Which variables are outputs?¶

  • return_next_season
    • It was pretty evident from the probelm itself. I did not need to DERIVE the responses of interest by SUMMARIZING the available data.
    • After exploring the data, I identified that accountid and season don't add any value to the analysis. They do not impact the outcome in a meaningful way.

4. Which inputs influence the response based on EDA?¶

  • Among the categorical variables, the combined bar graphs for gender, purchase_month, gender, purchase_dow, gender, price_type shows that they influence the response variable by a great margin.
  • Among the numeric variables, the offpeak_drivetime, peak_drivetime, and distancemiles influence the output variable greatly.

C. Exploratory Data Analysis¶

In [1]:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

import seaborn as sns
In [2]:
df = pd.read_csv("pitt_athletics_cmpinf2100_project.csv")
df
Out[2]:
accountid age gender distancemiles direction peak_drivetime offpeak_drivetime season purchase_month purchase_dow price_type price_level ticket_count price_per_ticket return_next_season
0 1 NaN NaN 10.816739 N 38.55 31.91 2016 Jan-Feb Mon A Lower Panther Red 3 252.0 YES
1 2 NaN NaN 8.140205 NE 31.74 25.02 2016 Jan-Feb Wed A Other 2 387.0 YES
2 3 64.0 Male 39.413746 S 70.38 61.85 2016 Mar-Apr Other A Lower Panther Blue 2 252.0 YES
3 4 43.0 NaN 18.678836 W 45.99 40.35 2016 Jan-Feb Other A Lower Panther Red 5 252.0 YES
4 5 NaN NaN 16.487613 W 41.50 36.62 2016 Jan-Feb Wed A Lower Panther Blue 2 252.0 NO
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
3355 3356 NaN NaN 9.537710 E 25.96 22.91 2016 Jan-Feb Thu A Other 2 147.0 YES
3356 3357 71.0 NaN 0.584306 N 12.92 9.92 2016 Jan-Feb Mon IA-2 Lower End Zone 2 187.0 YES
3357 3358 43.0 NaN 6.161834 N 24.37 19.65 2016 Mar-Apr Fri IA-2 Other 2 234.0 YES
3358 3359 66.0 NaN 15.710909 W 37.65 33.00 2016 Jan-Feb Mon A Other 2 234.0 YES
3359 3360 62.0 NaN 65.500448 S 101.43 91.83 2016 Jan-Feb Wed A Lower End Zone 2 187.0 YES

3360 rows × 15 columns

In [3]:
df.shape
Out[3]:
(3360, 15)
In [4]:
df.isna().sum()
Out[4]:
accountid                0
age                   1793
gender                2778
distancemiles            0
direction                0
peak_drivetime         402
offpeak_drivetime      364
season                   0
purchase_month           0
purchase_dow             0
price_type               0
price_level              0
ticket_count             0
price_per_ticket         0
return_next_season       0
dtype: int64
In [5]:
df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3360 entries, 0 to 3359
Data columns (total 15 columns):
 #   Column              Non-Null Count  Dtype  
---  ------              --------------  -----  
 0   accountid           3360 non-null   int64  
 1   age                 1567 non-null   float64
 2   gender              582 non-null    object 
 3   distancemiles       3360 non-null   float64
 4   direction           3360 non-null   object 
 5   peak_drivetime      2958 non-null   float64
 6   offpeak_drivetime   2996 non-null   float64
 7   season              3360 non-null   int64  
 8   purchase_month      3360 non-null   object 
 9   purchase_dow        3360 non-null   object 
 10  price_type          3360 non-null   object 
 11  price_level         3360 non-null   object 
 12  ticket_count        3360 non-null   int64  
 13  price_per_ticket    3360 non-null   float64
 14  return_next_season  3360 non-null   object 
dtypes: float64(5), int64(3), object(7)
memory usage: 393.9+ KB
In [6]:
df.nunique()
Out[6]:
accountid             3360
age                     70
gender                   4
distancemiles         3300
direction                8
peak_drivetime        2311
offpeak_drivetime     2333
season                   1
purchase_month           3
purchase_dow             6
price_type               4
price_level              8
ticket_count            20
price_per_ticket       113
return_next_season       2
dtype: int64
  • There are no numeric variables under the unique count of 15 so I will not be considering any of the numeric variable as a categorical variable.
In [7]:
df.describe()
Out[7]:
accountid age distancemiles peak_drivetime offpeak_drivetime season ticket_count price_per_ticket
count 3360.000000 1567.000000 3360.000000 2958.000000 2996.000000 3360.0 3360.000000 3360.000000
mean 1680.500000 55.737077 33.771579 40.704669 35.519606 2016.0 2.955357 223.462917
std 970.092779 14.307820 54.839662 23.032501 22.768479 0.0 2.697142 81.251540
min 1.000000 27.000000 0.156212 1.950000 1.170000 2016.0 1.000000 0.000000
25% 840.750000 44.000000 6.957832 24.505000 19.597500 2016.0 2.000000 174.000000
50% 1680.500000 57.000000 13.497007 35.745000 30.100000 2016.0 2.000000 202.000000
75% 2520.250000 67.000000 26.814141 48.250000 42.047500 2016.0 4.000000 252.000000
max 3360.000000 100.000000 273.287364 119.940000 119.740000 2016.0 106.000000 387.000000
In [8]:
df.describe(include='object')
Out[8]:
gender direction purchase_month purchase_dow price_type price_level return_next_season
count 582 3360 3360 3360 3360 3360 3360
unique 4 8 3 6 4 8 2
top Male W Jan-Feb Mon A Other YES
freq 464 957 2353 688 1937 1161 2235

Marginal Distributions¶

Bar Charts to count non-numeric values¶

In [9]:
sns.catplot(data = df, x = 'gender', kind = 'count', aspect = 2)

plt.show()
In [10]:
sns.catplot(data = df, x = 'direction', kind = 'count')

plt.show()
In [11]:
sns.catplot(data = df, x = 'purchase_month', kind = 'count')

plt.show()
In [12]:
sns.catplot(data = df, x = 'purchase_dow', kind = 'count')

plt.show()
In [13]:
sns.catplot(data = df, x = 'price_type', kind = 'count')

plt.show()
In [14]:
sns.catplot(data = df, y = 'price_level', kind = 'count')

plt.show()
In [15]:
sns.catplot(data = df, x = 'return_next_season', kind = 'count')

plt.show()

Histograms to find the count of numeric variables¶

In [16]:
df_features = df.select_dtypes('number').copy()
df_features
Out[16]:
accountid age distancemiles peak_drivetime offpeak_drivetime season ticket_count price_per_ticket
0 1 NaN 10.816739 38.55 31.91 2016 3 252.0
1 2 NaN 8.140205 31.74 25.02 2016 2 387.0
2 3 64.0 39.413746 70.38 61.85 2016 2 252.0
3 4 43.0 18.678836 45.99 40.35 2016 5 252.0
4 5 NaN 16.487613 41.50 36.62 2016 2 252.0
... ... ... ... ... ... ... ... ...
3355 3356 NaN 9.537710 25.96 22.91 2016 2 147.0
3356 3357 71.0 0.584306 12.92 9.92 2016 2 187.0
3357 3358 43.0 6.161834 24.37 19.65 2016 2 234.0
3358 3359 66.0 15.710909 37.65 33.00 2016 2 234.0
3359 3360 62.0 65.500448 101.43 91.83 2016 2 187.0

3360 rows × 8 columns

In [17]:
lf = df_features.reset_index().rename(columns={'index': 'rowid'}).melt(id_vars=['rowid'])
lf
Out[17]:
rowid variable value
0 0 accountid 1.0
1 1 accountid 2.0
2 2 accountid 3.0
3 3 accountid 4.0
4 4 accountid 5.0
... ... ... ...
26875 3355 price_per_ticket 147.0
26876 3356 price_per_ticket 187.0
26877 3357 price_per_ticket 234.0
26878 3358 price_per_ticket 234.0
26879 3359 price_per_ticket 187.0

26880 rows × 3 columns

In [18]:
lf.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 26880 entries, 0 to 26879
Data columns (total 3 columns):
 #   Column    Non-Null Count  Dtype  
---  ------    --------------  -----  
 0   rowid     26880 non-null  int64  
 1   variable  26880 non-null  object 
 2   value     24321 non-null  float64
dtypes: float64(1), int64(1), object(1)
memory usage: 630.1+ KB
In [19]:
sns.displot(data = lf, x='value', col='variable', kind='hist', kde=True, col_wrap=2,
            facet_kws={'sharex': False, 'sharey': False},
            common_bins=False,)

plt.show()

Categorical-Categorical Relationships¶

In [20]:
sns.catplot(data = df, x='gender', hue='return_next_season', kind='count', aspect=2)

plt.show()
In [21]:
sns.catplot(data = df, x='direction', hue='return_next_season', kind='count')

plt.show()
In [22]:
sns.catplot(data = df, x='purchase_month', hue='return_next_season', kind='count')

plt.show()
In [23]:
sns.catplot(data = df, x='purchase_dow', hue='return_next_season', kind='count')

plt.show()
In [24]:
sns.catplot(data = df, x='price_type', hue='return_next_season', kind='count')

plt.show()
In [25]:
sns.catplot(data = df, x = 'purchase_month', hue = 'return_next_season',\
            col = 'gender', kind = 'count', col_wrap = 2)

plt.show()
In [26]:
sns.catplot(data = df, x = 'purchase_dow', hue = 'return_next_season',\
            col = 'gender', kind = 'count', col_wrap = 2)

plt.show()
In [27]:
sns.catplot(data = df, x = 'price_type', hue = 'return_next_season',\
            col = 'gender', kind = 'count', col_wrap = 2)

plt.show()
In [28]:
sns.catplot(data = df, x = 'purchase_month', hue = 'return_next_season',\
            col = 'price_type', kind = 'count', col_wrap = 2)

plt.show()

Categorical to Continuous¶

In [29]:
sns.displot(data = df, x='age', col='return_next_season', kind='hist')

plt.show()
In [30]:
sns.displot(data = df, x='age', hue='return_next_season',
            common_norm=False, kind='kde')

plt.show()
In [31]:
sns.catplot( data = df, x='return_next_season', y='age', kind='box',
            showmeans=True,
            meanprops={'marker': 'o', 'markerfacecolor': 'white', 'markeredgecolor': 'black'})

plt.show()
In [32]:
sns.catplot( data = df, x='return_next_season', y='age', kind='point', join=False )

plt.show()
In [33]:
sns.displot(data = df, x='distancemiles', col='return_next_season', kind='hist')

plt.show()
In [34]:
sns.displot(data = df, x='distancemiles', hue='return_next_season',
            common_norm=False, kind='kde')

plt.show()
In [35]:
sns.catplot( data = df, x='return_next_season', y='distancemiles', kind='box',
            showmeans=True,
            meanprops={'marker': 'o', 'markerfacecolor': 'white', 'markeredgecolor': 'black'})

plt.show()
In [36]:
sns.catplot( data = df, x='return_next_season', y='distancemiles', kind='point', join=False )

plt.show()
In [37]:
sns.displot(data = df, x='peak_drivetime', col='return_next_season', kind='hist')

plt.show()
In [38]:
sns.displot(data = df, x='peak_drivetime', hue='return_next_season',
            common_norm=False, kind='kde')

plt.show()
In [39]:
sns.catplot( data = df, x='return_next_season', y='peak_drivetime', kind='box',
            showmeans=True,
            meanprops={'marker': 'o', 'markerfacecolor': 'white', 'markeredgecolor': 'black'})

plt.show()
In [40]:
sns.catplot( data = df, x='return_next_season', y='peak_drivetime', kind='point', join=False )

plt.show()
In [41]:
sns.displot(data = df, x='offpeak_drivetime', col='return_next_season', kind='hist')

plt.show()
In [42]:
sns.displot(data = df, x='offpeak_drivetime', hue='return_next_season',
            common_norm=False, kind='kde')

plt.show()
In [43]:
sns.catplot( data = df, x='return_next_season', y='offpeak_drivetime', kind='box',
            showmeans=True,
            meanprops={'marker': 'o', 'markerfacecolor': 'white', 'markeredgecolor': 'black'})

plt.show()
In [44]:
sns.catplot( data = df, x='return_next_season', y='offpeak_drivetime', kind='point', join=False )

plt.show()
In [45]:
sns.displot(data = df, x='price_per_ticket', col='return_next_season', kind='hist')

plt.show()
In [46]:
sns.displot(data = df, x='price_per_ticket', hue='return_next_season',
            common_norm=False, kind='kde')

plt.show()
In [47]:
sns.catplot( data = df, x='return_next_season', y='price_per_ticket', kind='box',
            showmeans=True,
            meanprops={'marker': 'o', 'markerfacecolor': 'white', 'markeredgecolor': 'black'})

plt.show()
In [48]:
sns.catplot( data = df, x='return_next_season', y='price_per_ticket', kind='point', join=False )

plt.show()
In [49]:
df_numeric_names = df.select_dtypes('number').columns.tolist()
df_numeric_names
Out[49]:
['accountid',
 'age',
 'distancemiles',
 'peak_drivetime',
 'offpeak_drivetime',
 'season',
 'ticket_count',
 'price_per_ticket']
In [50]:
df_category_names = df.select_dtypes('object').columns.tolist()
df_category_names
Out[50]:
['gender',
 'direction',
 'purchase_month',
 'purchase_dow',
 'price_type',
 'price_level',
 'return_next_season']
In [51]:
df_lf = df.reset_index().\
rename(columns={'index': 'rowid'}).\
melt(id_vars=['rowid']+df_category_names,
     value_vars=df_numeric_names)
In [52]:
df_lf.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 26880 entries, 0 to 26879
Data columns (total 10 columns):
 #   Column              Non-Null Count  Dtype  
---  ------              --------------  -----  
 0   rowid               26880 non-null  int64  
 1   gender              4656 non-null   object 
 2   direction           26880 non-null  object 
 3   purchase_month      26880 non-null  object 
 4   purchase_dow        26880 non-null  object 
 5   price_type          26880 non-null  object 
 6   price_level         26880 non-null  object 
 7   return_next_season  26880 non-null  object 
 8   variable            26880 non-null  object 
 9   value               24321 non-null  float64
dtypes: float64(1), int64(1), object(8)
memory usage: 2.1+ MB
In [53]:
df_lf.variable.value_counts()
Out[53]:
accountid            3360
age                  3360
distancemiles        3360
peak_drivetime       3360
offpeak_drivetime    3360
season               3360
ticket_count         3360
price_per_ticket     3360
Name: variable, dtype: int64
In [54]:
sns.displot(data = df_lf, x='value', col='variable', col_wrap=3,
            kind='hist',
            facet_kws={'sharex': False, 'sharey': False},
            common_bins=False)

plt.show()
In [55]:
sns.catplot(data = df_lf, x='return_next_season', y='value', col='variable', col_wrap=3,
            kind='box', sharey=False)

plt.show()
In [56]:
sns.catplot(data = df_lf, x='return_next_season', y='value', col='variable', col_wrap=3,
            kind='point', join=False,
            sharey=False)

plt.show()
In [57]:
sns.catplot(data = df_lf, x='return_next_season', y='value', col='variable', col_wrap=3,
            kind='violin', sharey=False)

plt.show()
In [58]:
sns.catplot(data = df, x='purchase_dow', y='peak_drivetime', hue='purchase_month', kind='box', aspect=2)

plt.show()
In [59]:
sns.catplot(data = df, x='purchase_dow', y='price_per_ticket', kind='violin', aspect=2)

plt.show()
In [60]:
sns.catplot(data = df, x='price_type', y='peak_drivetime', kind='violin', aspect=2)

plt.show()
In [61]:
sns.catplot(data = df, x='direction', y='age', kind='violin', aspect=2)

plt.show()
In [62]:
sns.catplot(data = df, x='purchase_dow', y='distancemiles', kind='violin', aspect=2)

plt.show()

Continuous to Continuous¶

In [63]:
sns.pairplot(data = df)

plt.show()
In [64]:
sns.pairplot(data = df, hue='return_next_season', 
             diag_kws={'common_norm': False})

plt.show()
  • It is pretty evident that distancemiles, peak_drivetime, and offpeak_drivetime are correlated.
In [65]:
sns.lmplot(data = df, x='age', y='peak_drivetime', hue='return_next_season')

plt.show()
In [66]:
sns.lmplot(data = df, x='age', y='offpeak_drivetime', hue='return_next_season')

plt.show()
In [67]:
sns.lmplot(data = df, x='age', y='ticket_count', hue='return_next_season')

plt.show()
In [68]:
sns.lmplot(data = df, x='age', y='price_per_ticket', hue='return_next_season')

plt.show()
In [69]:
sns.lmplot(data = df, x='distancemiles', y='peak_drivetime', hue='return_next_season')

plt.show()
In [70]:
sns.lmplot(data = df, x='distancemiles', y='offpeak_drivetime', hue='return_next_season')

plt.show()
In [71]:
sns.lmplot(data = df, x='distancemiles', y='ticket_count', hue='return_next_season')

plt.show()
In [72]:
sns.lmplot(data = df, x='distancemiles', y='price_per_ticket', hue='return_next_season')

plt.show()
In [73]:
sns.lmplot(data = df, x='peak_drivetime', y='offpeak_drivetime', hue='return_next_season')

plt.show()
In [74]:
sns.lmplot(data = df, x='peak_drivetime', y='ticket_count', hue='return_next_season')

plt.show()
In [75]:
sns.lmplot(data = df, x='peak_drivetime', y='price_per_ticket', hue='return_next_season')

plt.show()
In [76]:
sns.lmplot(data = df, x='offpeak_drivetime', y='ticket_count', hue='return_next_season')

plt.show()
In [77]:
sns.lmplot(data = df, x='offpeak_drivetime', y='price_per_ticket', hue='return_next_season')

plt.show()
In [78]:
sns.lmplot(data = df, x='ticket_count', y='price_per_ticket', hue='return_next_season')

plt.show()

Correlation Plots¶

In [79]:
the_groups = df.return_next_season.unique().tolist()
the_groups
Out[79]:
['YES', 'NO']
In [80]:
corr_per_group_all = df.groupby('return_next_season').corr(numeric_only=True)
corr_per_group_all
Out[80]:
accountid age distancemiles peak_drivetime offpeak_drivetime season ticket_count price_per_ticket
return_next_season
NO accountid 1.000000 0.180844 0.097371 0.017268 0.028067 NaN 0.102453 0.000789
age 0.180844 1.000000 -0.074358 0.217510 0.182868 NaN -0.011592 0.237504
distancemiles 0.097371 -0.074358 1.000000 0.959071 0.972148 NaN 0.046327 -0.091092
peak_drivetime 0.017268 0.217510 0.959071 1.000000 0.998711 NaN -0.038073 -0.029305
offpeak_drivetime 0.028067 0.182868 0.972148 0.998711 1.000000 NaN -0.010020 -0.032092
season NaN NaN NaN NaN NaN NaN NaN NaN
ticket_count 0.102453 -0.011592 0.046327 -0.038073 -0.010020 NaN 1.000000 -0.048334
price_per_ticket 0.000789 0.237504 -0.091092 -0.029305 -0.032092 NaN -0.048334 1.000000
YES accountid 1.000000 0.176936 -0.002587 0.002837 0.007596 NaN 0.030087 0.044013
age 0.176936 1.000000 -0.019075 0.035058 0.032116 NaN 0.107311 0.201387
distancemiles -0.002587 -0.019075 1.000000 0.966881 0.975058 NaN -0.032916 -0.002443
peak_drivetime 0.002837 0.035058 0.966881 1.000000 0.998788 NaN -0.069079 0.028850
offpeak_drivetime 0.007596 0.032116 0.975058 0.998788 1.000000 NaN -0.065128 0.021469
season NaN NaN NaN NaN NaN NaN NaN NaN
ticket_count 0.030087 0.107311 -0.032916 -0.069079 -0.065128 NaN 1.000000 -0.091880
price_per_ticket 0.044013 0.201387 -0.002443 0.028850 0.021469 NaN -0.091880 1.000000
In [81]:
fig, axs = plt.subplots(1, len(the_groups), figsize=(18, 6), sharex=True, sharey=True )

for ix in range(len(the_groups)):
    sns.heatmap( data = corr_per_group_all.loc[ the_groups[ ix ] ],
                 vmin=-1, vmax=1, center = 0,
                 cmap='coolwarm',
                 ax=axs[ix] )
    
    axs[ ix ].set_title('Next Season Return: \n%s' % the_groups[ ix ] )

plt.show()
In [82]:
fig, ax = plt.subplots(figsize=(14,8))

sns.heatmap( data = df.corr(numeric_only=True),
            vmin=-1, vmax=1, center=0,
            cmap='coolwarm',
            annot=True, annot_kws={'fontsize': 20},
            ax=ax)

plt.show()

D. Cluster Analysis¶

  • I'm using continuous inputs for cluster analysis. I've implemented both the methods taught in class. Looking at the results below, I don't think cluster analysis is going to help with this dataset.
In [83]:
df[df.isnull().any(axis=1)]
Out[83]:
accountid age gender distancemiles direction peak_drivetime offpeak_drivetime season purchase_month purchase_dow price_type price_level ticket_count price_per_ticket return_next_season
0 1 NaN NaN 10.816739 N 38.55 31.91 2016 Jan-Feb Mon A Lower Panther Red 3 252.0 YES
1 2 NaN NaN 8.140205 NE 31.74 25.02 2016 Jan-Feb Wed A Other 2 387.0 YES
3 4 43.0 NaN 18.678836 W 45.99 40.35 2016 Jan-Feb Other A Lower Panther Red 5 252.0 YES
4 5 NaN NaN 16.487613 W 41.50 36.62 2016 Jan-Feb Wed A Lower Panther Blue 2 252.0 NO
6 7 42.0 NaN 12.319882 W 37.21 30.96 2016 Jan-Feb Mon Other Lower End Zone 2 150.0 YES
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
3355 3356 NaN NaN 9.537710 E 25.96 22.91 2016 Jan-Feb Thu A Other 2 147.0 YES
3356 3357 71.0 NaN 0.584306 N 12.92 9.92 2016 Jan-Feb Mon IA-2 Lower End Zone 2 187.0 YES
3357 3358 43.0 NaN 6.161834 N 24.37 19.65 2016 Mar-Apr Fri IA-2 Other 2 234.0 YES
3358 3359 66.0 NaN 15.710909 W 37.65 33.00 2016 Jan-Feb Mon A Other 2 234.0 YES
3359 3360 62.0 NaN 65.500448 S 101.43 91.83 2016 Jan-Feb Wed A Lower End Zone 2 187.0 YES

2848 rows × 15 columns

In [84]:
df_clean = df.dropna()
df_clean
Out[84]:
accountid age gender distancemiles direction peak_drivetime offpeak_drivetime season purchase_month purchase_dow price_type price_level ticket_count price_per_ticket return_next_season
2 3 64.0 Male 39.413746 S 70.38 61.85 2016 Mar-Apr Other A Lower Panther Blue 2 252.0 YES
5 6 60.0 Male 15.889143 W 44.41 37.41 2016 Jan-Feb Mon A Lower Panther Red 2 252.0 YES
7 8 45.0 Male 8.101879 SE 30.54 24.15 2016 Jan-Feb Thu Other Lower Panther Blue 2 202.0 YES
9 10 71.0 Male 16.742254 S 48.60 40.84 2016 Jan-Feb Thu Other Lower Sideline 2 202.0 YES
11 12 68.0 Male 5.011842 N 24.79 19.15 2016 Jan-Feb Other A Lower Sideline 6 252.0 YES
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
3325 3326 38.0 Male 13.492581 NE 42.61 36.92 2016 Mar-Apr Wed A Lower Sideline 2 252.0 YES
3330 3331 62.0 Male 15.036228 S 39.79 32.66 2016 Jan-Feb Mon A Other 4 387.0 YES
3333 3334 63.0 Male 5.592205 S 22.67 17.93 2016 Mar-Apr Thu A Other 2 234.0 YES
3335 3336 56.0 Male 21.254019 SE 48.16 42.57 2016 Jan-Feb Other IA-2 Lower End Zone 2 187.0 YES
3339 3340 60.0 Male 9.060949 N 34.54 27.72 2016 Jan-Feb Other A Lower Panther Red 2 252.0 YES

512 rows × 15 columns

In [85]:
df_clean.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 512 entries, 2 to 3339
Data columns (total 15 columns):
 #   Column              Non-Null Count  Dtype  
---  ------              --------------  -----  
 0   accountid           512 non-null    int64  
 1   age                 512 non-null    float64
 2   gender              512 non-null    object 
 3   distancemiles       512 non-null    float64
 4   direction           512 non-null    object 
 5   peak_drivetime      512 non-null    float64
 6   offpeak_drivetime   512 non-null    float64
 7   season              512 non-null    int64  
 8   purchase_month      512 non-null    object 
 9   purchase_dow        512 non-null    object 
 10  price_type          512 non-null    object 
 11  price_level         512 non-null    object 
 12  ticket_count        512 non-null    int64  
 13  price_per_ticket    512 non-null    float64
 14  return_next_season  512 non-null    object 
dtypes: float64(5), int64(3), object(7)
memory usage: 64.0+ KB
In [86]:
df_clean.isna().sum()
Out[86]:
accountid             0
age                   0
gender                0
distancemiles         0
direction             0
peak_drivetime        0
offpeak_drivetime     0
season                0
purchase_month        0
purchase_dow          0
price_type            0
price_level           0
ticket_count          0
price_per_ticket      0
return_next_season    0
dtype: int64
In [87]:
df_clean.describe()
Out[87]:
accountid age distancemiles peak_drivetime offpeak_drivetime season ticket_count price_per_ticket
count 512.000000 512.000000 512.000000 512.000000 512.000000 512.0 512.000000 512.000000
mean 1687.925781 57.230469 15.394504 40.123672 33.985625 2016.0 2.970703 249.736523
std 1083.228755 13.038915 13.594790 22.205128 20.367549 0.0 1.961748 79.381047
min 3.000000 28.000000 0.581256 8.960000 6.380000 2016.0 1.000000 106.000000
25% 713.250000 48.000000 6.353011 24.790000 19.695000 2016.0 2.000000 187.000000
50% 1586.000000 59.000000 11.270551 34.855000 29.390000 2016.0 2.000000 234.000000
75% 2724.500000 67.000000 19.423480 46.475000 39.980000 2016.0 4.000000 252.000000
max 3340.000000 90.000000 81.770357 118.800000 106.510000 2016.0 24.000000 387.000000
In [88]:
df_clean.describe(include=object)
Out[88]:
gender direction purchase_month purchase_dow price_type price_level return_next_season
count 512 512 512 512 512 512 512
unique 4 8 3 6 4 8 2
top Male S Jan-Feb Tue A Other YES
freq 407 110 424 107 342 202 488
In [89]:
sns.catplot(data = df_clean, x='age', hue='return_next_season', kind='strip', jitter=False)

plt.show()
In [90]:
sns.catplot(data = df_clean, x='age', kind='strip', jitter=False)

plt.show()
In [91]:
X = df_clean.age.to_numpy().reshape(-1, 1)
In [92]:
X.ndim
Out[92]:
2
In [93]:
X
Out[93]:
array([[64.],
       [60.],
       [45.],
       [71.],
       [68.],
       [69.],
       [56.],
       [70.],
       [61.],
       [44.],
       [30.],
       [47.],
       [56.],
       [45.],
       [55.],
       [47.],
       [56.],
       [57.],
       [56.],
       [66.],
       [32.],
       [65.],
       [64.],
       [62.],
       [48.],
       [63.],
       [49.],
       [38.],
       [44.],
       [62.],
       [40.],
       [70.],
       [52.],
       [58.],
       [37.],
       [70.],
       [64.],
       [39.],
       [69.],
       [68.],
       [62.],
       [60.],
       [65.],
       [49.],
       [49.],
       [60.],
       [42.],
       [63.],
       [67.],
       [61.],
       [76.],
       [38.],
       [52.],
       [51.],
       [45.],
       [53.],
       [39.],
       [29.],
       [56.],
       [63.],
       [45.],
       [62.],
       [52.],
       [48.],
       [65.],
       [63.],
       [37.],
       [51.],
       [68.],
       [60.],
       [61.],
       [72.],
       [74.],
       [64.],
       [52.],
       [51.],
       [62.],
       [67.],
       [56.],
       [63.],
       [77.],
       [30.],
       [56.],
       [50.],
       [55.],
       [72.],
       [33.],
       [51.],
       [38.],
       [55.],
       [33.],
       [73.],
       [65.],
       [74.],
       [68.],
       [58.],
       [60.],
       [49.],
       [43.],
       [35.],
       [69.],
       [58.],
       [62.],
       [37.],
       [49.],
       [57.],
       [47.],
       [64.],
       [36.],
       [63.],
       [61.],
       [68.],
       [46.],
       [65.],
       [65.],
       [61.],
       [67.],
       [57.],
       [68.],
       [67.],
       [49.],
       [55.],
       [49.],
       [66.],
       [62.],
       [41.],
       [56.],
       [34.],
       [63.],
       [53.],
       [43.],
       [35.],
       [69.],
       [78.],
       [85.],
       [38.],
       [50.],
       [63.],
       [50.],
       [61.],
       [68.],
       [54.],
       [69.],
       [55.],
       [36.],
       [73.],
       [40.],
       [64.],
       [37.],
       [67.],
       [59.],
       [71.],
       [73.],
       [68.],
       [52.],
       [55.],
       [63.],
       [75.],
       [69.],
       [39.],
       [72.],
       [36.],
       [41.],
       [58.],
       [63.],
       [66.],
       [40.],
       [73.],
       [60.],
       [54.],
       [67.],
       [48.],
       [43.],
       [46.],
       [61.],
       [50.],
       [43.],
       [56.],
       [66.],
       [79.],
       [66.],
       [73.],
       [76.],
       [73.],
       [67.],
       [59.],
       [52.],
       [58.],
       [58.],
       [65.],
       [62.],
       [55.],
       [49.],
       [52.],
       [74.],
       [64.],
       [74.],
       [52.],
       [62.],
       [52.],
       [55.],
       [60.],
       [62.],
       [32.],
       [34.],
       [36.],
       [48.],
       [68.],
       [48.],
       [36.],
       [51.],
       [82.],
       [58.],
       [36.],
       [79.],
       [66.],
       [62.],
       [68.],
       [37.],
       [51.],
       [54.],
       [31.],
       [67.],
       [30.],
       [46.],
       [43.],
       [69.],
       [55.],
       [77.],
       [71.],
       [69.],
       [50.],
       [50.],
       [57.],
       [66.],
       [53.],
       [69.],
       [54.],
       [48.],
       [36.],
       [49.],
       [31.],
       [33.],
       [37.],
       [53.],
       [68.],
       [32.],
       [38.],
       [36.],
       [63.],
       [75.],
       [29.],
       [35.],
       [59.],
       [39.],
       [76.],
       [53.],
       [28.],
       [32.],
       [45.],
       [52.],
       [43.],
       [59.],
       [58.],
       [41.],
       [31.],
       [53.],
       [31.],
       [39.],
       [29.],
       [40.],
       [75.],
       [59.],
       [65.],
       [74.],
       [67.],
       [28.],
       [72.],
       [58.],
       [57.],
       [69.],
       [30.],
       [63.],
       [35.],
       [32.],
       [53.],
       [29.],
       [76.],
       [59.],
       [57.],
       [61.],
       [61.],
       [43.],
       [28.],
       [63.],
       [68.],
       [51.],
       [28.],
       [48.],
       [58.],
       [69.],
       [31.],
       [58.],
       [77.],
       [58.],
       [77.],
       [60.],
       [68.],
       [52.],
       [70.],
       [48.],
       [49.],
       [73.],
       [36.],
       [45.],
       [48.],
       [52.],
       [55.],
       [82.],
       [60.],
       [59.],
       [74.],
       [54.],
       [70.],
       [53.],
       [51.],
       [55.],
       [48.],
       [73.],
       [90.],
       [60.],
       [32.],
       [61.],
       [51.],
       [81.],
       [61.],
       [58.],
       [70.],
       [59.],
       [56.],
       [62.],
       [67.],
       [52.],
       [60.],
       [64.],
       [60.],
       [72.],
       [82.],
       [43.],
       [67.],
       [65.],
       [78.],
       [74.],
       [74.],
       [70.],
       [63.],
       [78.],
       [61.],
       [47.],
       [67.],
       [48.],
       [40.],
       [66.],
       [56.],
       [52.],
       [64.],
       [43.],
       [72.],
       [48.],
       [58.],
       [60.],
       [58.],
       [66.],
       [43.],
       [58.],
       [53.],
       [55.],
       [78.],
       [58.],
       [73.],
       [67.],
       [39.],
       [38.],
       [63.],
       [56.],
       [72.],
       [67.],
       [63.],
       [71.],
       [74.],
       [70.],
       [70.],
       [66.],
       [66.],
       [55.],
       [65.],
       [66.],
       [47.],
       [64.],
       [78.],
       [71.],
       [74.],
       [46.],
       [51.],
       [53.],
       [71.],
       [66.],
       [38.],
       [41.],
       [54.],
       [46.],
       [55.],
       [67.],
       [56.],
       [56.],
       [60.],
       [59.],
       [76.],
       [76.],
       [70.],
       [72.],
       [71.],
       [69.],
       [56.],
       [37.],
       [65.],
       [46.],
       [38.],
       [62.],
       [37.],
       [84.],
       [60.],
       [50.],
       [64.],
       [62.],
       [48.],
       [74.],
       [54.],
       [63.],
       [71.],
       [64.],
       [66.],
       [51.],
       [69.],
       [38.],
       [35.],
       [56.],
       [63.],
       [73.],
       [71.],
       [81.],
       [73.],
       [45.],
       [59.],
       [60.],
       [42.],
       [50.],
       [75.],
       [43.],
       [66.],
       [70.],
       [48.],
       [42.],
       [61.],
       [57.],
       [55.],
       [45.],
       [66.],
       [38.],
       [56.],
       [75.],
       [62.],
       [65.],
       [64.],
       [52.],
       [69.],
       [75.],
       [70.],
       [72.],
       [58.],
       [69.],
       [48.],
       [84.],
       [69.],
       [79.],
       [49.],
       [53.],
       [43.],
       [68.],
       [77.],
       [71.],
       [74.],
       [64.],
       [59.],
       [85.],
       [70.],
       [64.],
       [65.],
       [37.],
       [64.],
       [57.],
       [77.],
       [55.],
       [43.],
       [49.],
       [67.],
       [56.],
       [38.],
       [62.],
       [63.],
       [56.],
       [60.]])
In [94]:
from sklearn.cluster import KMeans
In [95]:
KMeans(n_clusters=2, random_state=121, n_init=25, max_iter=500).fit_predict( X )
Out[95]:
array([1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1,
       1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0,
       0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1,
       0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0,
       0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1,
       1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0,
       1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1,
       0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0,
       0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0,
       1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0,
       0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0,
       0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1,
       0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0,
       0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1,
       0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1,
       1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1,
       1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0,
       1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
       1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1,
       1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1,
       1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0,
       0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1,
       1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1,
       1, 0, 1, 1, 1, 1], dtype=int32)
In [96]:
age_clean = df_clean[['age', 'return_next_season']].copy()
age_clean
Out[96]:
age return_next_season
2 64.0 YES
5 60.0 YES
7 45.0 YES
9 71.0 YES
11 68.0 YES
... ... ...
3325 38.0 YES
3330 62.0 YES
3333 63.0 YES
3335 56.0 YES
3339 60.0 YES

512 rows × 2 columns

In [97]:
km2b = KMeans(n_clusters=2, random_state=121, n_init=25, max_iter=50)
In [98]:
age_clean['k3'] = pd.Series( km2b.fit_predict(X), index=age_clean.index )
age_clean
Out[98]:
age return_next_season k3
2 64.0 YES 1
5 60.0 YES 1
7 45.0 YES 0
9 71.0 YES 1
11 68.0 YES 1
... ... ... ...
3325 38.0 YES 0
3330 62.0 YES 1
3333 63.0 YES 1
3335 56.0 YES 1
3339 60.0 YES 1

512 rows × 3 columns

In [99]:
age_clean.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 512 entries, 2 to 3339
Data columns (total 3 columns):
 #   Column              Non-Null Count  Dtype  
---  ------              --------------  -----  
 0   age                 512 non-null    float64
 1   return_next_season  512 non-null    object 
 2   k3                  512 non-null    int32  
dtypes: float64(1), int32(1), object(1)
memory usage: 14.0+ KB
In [100]:
age_clean.nunique()
Out[100]:
age                   57
return_next_season     2
k3                     2
dtype: int64
In [101]:
sns.catplot(data = age_clean, x='age', hue='k3', kind='strip', jitter=False)

plt.show()
In [102]:
age_clean['k3'] = age_clean.k3.astype('category')
age_clean.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 512 entries, 2 to 3339
Data columns (total 3 columns):
 #   Column              Non-Null Count  Dtype   
---  ------              --------------  -----   
 0   age                 512 non-null    float64 
 1   return_next_season  512 non-null    object  
 2   k3                  512 non-null    category
dtypes: category(1), float64(1), object(1)
memory usage: 12.6+ KB
In [103]:
sns.catplot(data = age_clean, x='k3', kind='count')

plt.show()
In [104]:
pd.crosstab( age_clean.return_next_season, age_clean.k3, margins=True )
Out[104]:
k3 0 1 All
return_next_season
NO 14 10 24
YES 179 309 488
All 193 319 512
In [105]:
fig, ax = plt.subplots()

sns.heatmap(data = pd.crosstab( age_clean.return_next_season, age_clean.k3, margins=True ),
            annot=True, annot_kws={'fontsize': 20}, fmt='d', cmap='viridis',
            ax=ax )

plt.show()
In [106]:
tots_within = []

K = range(1, age_clean.shape[0]+1)

for k in K:
    km = KMeans(n_clusters=k, random_state=121, n_init=25, max_iter=500)
    km = km.fit( X )
    
    tots_within.append( km.inertia_ )
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (58). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (59). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (60). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (61). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (62). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (63). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (64). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (65). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (66). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (67). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (68). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (69). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (70). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (71). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (72). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (73). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (74). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (75). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (76). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (77). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (78). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (79). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (80). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (81). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (82). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (83). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (84). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (85). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (86). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (87). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (88). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (89). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (90). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (91). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (92). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (93). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (94). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (95). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (96). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (97). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (98). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (99). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (100). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (101). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (102). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (103). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (104). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (105). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (106). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (107). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (108). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (109). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (110). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (111). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (112). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (113). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (114). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (115). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (116). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (117). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (118). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (119). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (120). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (121). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (122). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (123). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (124). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (125). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (126). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (127). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (128). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (129). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (130). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (131). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (132). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (133). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (134). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (135). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (136). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (137). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (138). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (139). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (140). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (141). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (142). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (143). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (144). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (145). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (146). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (147). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (148). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (149). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (150). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (151). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (152). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (153). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (154). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (155). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (156). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (157). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (158). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (159). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (160). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (161). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (162). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (163). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (164). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (165). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (166). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (167). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (168). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (169). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (170). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (171). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (172). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (173). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (174). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (175). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (176). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (177). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (178). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (179). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (180). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (181). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (182). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (183). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (184). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (185). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (186). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (187). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (188). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (189). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (190). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (191). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (192). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (193). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (194). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (195). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (196). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (197). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (198). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (199). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (200). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (201). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (202). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (203). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (204). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (205). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (206). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (207). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (208). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (209). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (210). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (211). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (212). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (213). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (214). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (215). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (216). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (217). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (218). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (219). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (220). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (221). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (222). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (223). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (224). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (225). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (226). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (227). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (228). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (229). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (230). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (231). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (232). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (233). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (234). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (235). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (236). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (237). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (238). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (239). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (240). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (241). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (242). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (243). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (244). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (245). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (246). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (247). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (248). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (249). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (250). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (251). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (252). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (253). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (254). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (255). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (256). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (257). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (258). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (259). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (260). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (261). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (262). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (263). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (264). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (265). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (266). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (267). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (268). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (269). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (270). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (271). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (272). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (273). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (274). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (275). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (276). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (277). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (278). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (279). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (280). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (281). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (282). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (283). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (284). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (285). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (286). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (287). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (288). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (289). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (290). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (291). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (292). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (293). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (294). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (295). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (296). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (297). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (298). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (299). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (300). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (301). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (302). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (303). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (304). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (305). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (306). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (307). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (308). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (309). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (310). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (311). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (312). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (313). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (314). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (315). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (316). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (317). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (318). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (319). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (320). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (321). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (322). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (323). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (324). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (325). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (326). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (327). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (328). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (329). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (330). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (331). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (332). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (333). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (334). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (335). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (336). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (337). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (338). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (339). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (340). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (341). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (342). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (343). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (344). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (345). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (346). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (347). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (348). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (349). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (350). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (351). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (352). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (353). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (354). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (355). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (356). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (357). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (358). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (359). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (360). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (361). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (362). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (363). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (364). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (365). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (366). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (367). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (368). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (369). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (370). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (371). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (372). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (373). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (374). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (375). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (376). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (377). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (378). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (379). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (380). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (381). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (382). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (383). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (384). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (385). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (386). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (387). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (388). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (389). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (390). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (391). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (392). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (393). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (394). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (395). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (396). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (397). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (398). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (399). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (400). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (401). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (402). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (403). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (404). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (405). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (406). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (407). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (408). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (409). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (410). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (411). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (412). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (413). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (414). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (415). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (416). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (417). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (418). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (419). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (420). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (421). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (422). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (423). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (424). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (425). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (426). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (427). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (428). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (429). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (430). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (431). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (432). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (433). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (434). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (435). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (436). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (437). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (438). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (439). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (440). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (441). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (442). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (443). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (444). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (445). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (446). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (447). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (448). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (449). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (450). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (451). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (452). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (453). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (454). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (455). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (456). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (457). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (458). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (459). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (460). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (461). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (462). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (463). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (464). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (465). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (466). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (467). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (468). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (469). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (470). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (471). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (472). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (473). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (474). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (475). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (476). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (477). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (478). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (479). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (480). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (481). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (482). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (483). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (484). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (485). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (486). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (487). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (488). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (489). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (490). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (491). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (492). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (493). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (494). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (495). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (496). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (497). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (498). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (499). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (500). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (501). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (502). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (503). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (504). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (505). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (506). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (507). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (508). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (509). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (510). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (511). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
/Users/vish/anaconda3/envs/cmpinf2100/lib/python3.8/site-packages/sklearn/base.py:1151: ConvergenceWarning: Number of distinct clusters (57) found smaller than n_clusters (512). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
In [107]:
tots_within
Out[107]:
[86876.8046875,
 27080.926990108343,
 12801.278087941615,
 7399.337812112977,
 4919.747752273421,
 3643.8928996906507,
 2757.8127959022777,
 2127.9161579302518,
 1568.796062988693,
 1255.4103022494564,
 1036.956686257739,
 845.499748778538,
 703.465442254688,
 619.423151348713,
 565.1256628687023,
 478.6983371571332,
 434.1302261267181,
 396.77203318382,
 350.21401093885214,
 299.05096696889484,
 273.08584713509794,
 247.90323566697896,
 237.8860506004679,
 211.20884446849914,
 189.30132108513703,
 176.7859301360955,
 150.74556212390883,
 138.89720342057302,
 133.30574999933643,
 129.37036575857695,
 115.2887542985172,
 103.50716095224995,
 93.63439333340565,
 84.62101161720727,
 77.89632565502131,
 68.42571378619635,
 64.68072648791957,
 59.358625854821504,
 53.93441423607327,
 46.798809523809524,
 43.3826737462893,
 36.953384687208214,
 31.872919319242847,
 28.73551587301587,
 24.73551587301587,
 20.7127886002886,
 17.76735209235209,
 15.54512987012987,
 12.817857142857143,
 10.722619047619048,
 8.714285714285715,
 6.942857142857143,
 5.000000000000001,
 3.4000000000000004,
 2.2,
 1.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0]
In [108]:
fig, ax = plt.subplots()

ax.plot( K, tots_within, 'bo-')
ax.set_xlabel('number of clusters')
ax.set_ylabel('total within sum of squares')

plt.show()
In [109]:
sns.relplot(data = df, x='age', y='peak_drivetime')

plt.show()
In [110]:
sns.relplot(data = df, x='age', y='peak_drivetime', hue='return_next_season')

plt.show()
In [111]:
X1 = df_clean.select_dtypes('number').copy().to_numpy()
X1
Out[111]:
array([[3.00000000e+00, 6.40000000e+01, 3.94137459e+01, ...,
        2.01600000e+03, 2.00000000e+00, 2.52000000e+02],
       [6.00000000e+00, 6.00000000e+01, 1.58891427e+01, ...,
        2.01600000e+03, 2.00000000e+00, 2.52000000e+02],
       [8.00000000e+00, 4.50000000e+01, 8.10187949e+00, ...,
        2.01600000e+03, 2.00000000e+00, 2.02000000e+02],
       ...,
       [3.33400000e+03, 6.30000000e+01, 5.59220494e+00, ...,
        2.01600000e+03, 2.00000000e+00, 2.34000000e+02],
       [3.33600000e+03, 5.60000000e+01, 2.12540192e+01, ...,
        2.01600000e+03, 2.00000000e+00, 1.87000000e+02],
       [3.34000000e+03, 6.00000000e+01, 9.06094932e+00, ...,
        2.01600000e+03, 2.00000000e+00, 2.52000000e+02]])
In [112]:
X1.shape
Out[112]:
(512, 8)
In [113]:
from sklearn.cluster import KMeans
In [114]:
clusters_2 = KMeans( n_clusters=2, random_state=121, n_init=25, max_iter=500 ).fit_predict( X1 )
In [115]:
df_age_peak_drivetime = df_clean[['age', 'peak_drivetime', 'return_next_season']].copy()
df_age_peak_drivetime
Out[115]:
age peak_drivetime return_next_season
2 64.0 70.38 YES
5 60.0 44.41 YES
7 45.0 30.54 YES
9 71.0 48.60 YES
11 68.0 24.79 YES
... ... ... ...
3325 38.0 42.61 YES
3330 62.0 39.79 YES
3333 63.0 22.67 YES
3335 56.0 48.16 YES
3339 60.0 34.54 YES

512 rows × 3 columns

In [116]:
df_age_peak_drivetime['k2'] = pd.Series( clusters_2, index=df_age_peak_drivetime.index ).astype('category')
In [117]:
df_age_peak_drivetime.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 512 entries, 2 to 3339
Data columns (total 4 columns):
 #   Column              Non-Null Count  Dtype   
---  ------              --------------  -----   
 0   age                 512 non-null    float64 
 1   peak_drivetime      512 non-null    float64 
 2   return_next_season  512 non-null    object  
 3   k2                  512 non-null    category
dtypes: category(1), float64(2), object(1)
memory usage: 16.6+ KB
In [118]:
df_age_peak_drivetime.nunique()
Out[118]:
age                    57
peak_drivetime        491
return_next_season      2
k2                      2
dtype: int64
In [119]:
sns.relplot(data = df_age_peak_drivetime, x='age', y='peak_drivetime', hue='k2')

plt.show()
In [120]:
fig, ax = plt.subplots()

sns.heatmap( data = pd.crosstab( df_age_peak_drivetime.return_next_season, df_age_peak_drivetime.k2, margins=True ),
             annot=True, annot_kws={'fontsize': 15}, fmt='d', cmap='coolwarm',
             ax=ax )

plt.show()
In [121]:
sns.relplot(data = df_age_peak_drivetime, x='age', y='peak_drivetime', hue='k2', style='return_next_season')

plt.show()
In [122]:
clusters_2 = KMeans(n_clusters=2, random_state=121, n_init=25, max_iter=500).fit_predict( X1 )
In [123]:
df_age_peak_drivetime['k2'] = pd.Series( clusters_2, index=df_age_peak_drivetime.index ).astype('category')
df_age_peak_drivetime.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 512 entries, 2 to 3339
Data columns (total 4 columns):
 #   Column              Non-Null Count  Dtype   
---  ------              --------------  -----   
 0   age                 512 non-null    float64 
 1   peak_drivetime      512 non-null    float64 
 2   return_next_season  512 non-null    object  
 3   k2                  512 non-null    category
dtypes: category(1), float64(2), object(1)
memory usage: 32.8+ KB
In [124]:
sns.relplot(data = df_age_peak_drivetime, x='age', y='peak_drivetime', hue='k2')

plt.show()
In [125]:
tots_within1 = []

K1 = range(1, df_age_peak_drivetime.shape[0]+1)

for k in K1:
    km1 = KMeans(n_clusters=k, random_state=121, n_init=25, max_iter=500)
    km1 = km1.fit( X1 )
    
    tots_within1.append( km.inertia_ )
In [126]:
fig, ax = plt.subplots()

ax.plot( K1, tots_within1, 'bo-' )
ax.set_xlabel('number of clusters')
ax.set_ylabel('total within sum of squares')

plt.show()
  • I've used both the methods, 1 and 2 variables for clustering.
  • The distributions are odd looking.
  • The variables I'm using aren't highly correlated, as shows in the heatmap above.
  • For the time being, I've dropped the rows with missing values. So the number of rows has reduced from 3360 to 512.
In [127]:
from sklearn.preprocessing import StandardScaler
In [128]:
df_clean_features = df_clean.select_dtypes('number').copy()
df_clean_features
Out[128]:
accountid age distancemiles peak_drivetime offpeak_drivetime season ticket_count price_per_ticket
2 3 64.0 39.413746 70.38 61.85 2016 2 252.0
5 6 60.0 15.889143 44.41 37.41 2016 2 252.0
7 8 45.0 8.101879 30.54 24.15 2016 2 202.0
9 10 71.0 16.742254 48.60 40.84 2016 2 202.0
11 12 68.0 5.011842 24.79 19.15 2016 6 252.0
... ... ... ... ... ... ... ... ...
3325 3326 38.0 13.492581 42.61 36.92 2016 2 252.0
3330 3331 62.0 15.036228 39.79 32.66 2016 4 387.0
3333 3334 63.0 5.592205 22.67 17.93 2016 2 234.0
3335 3336 56.0 21.254019 48.16 42.57 2016 2 187.0
3339 3340 60.0 9.060949 34.54 27.72 2016 2 252.0

512 rows × 8 columns

In [129]:
Xdf = StandardScaler().fit_transform( df_clean_features )
Xdf
Out[129]:
array([[-1.5569875 ,  0.51968677,  1.76852548, ...,  0.        ,
        -0.49529934,  0.02854195],
       [-1.55421529,  0.21261276,  0.03642004, ...,  0.        ,
        -0.49529934,  0.02854195],
       [-1.55236716, -0.93891475, -0.53695248, ...,  0.        ,
        -0.49529934, -0.60194733],
       ...,
       [ 1.52108598,  0.44291827, -0.72173863, ...,  0.        ,
        -0.49529934, -0.19843419],
       [ 1.52293412, -0.09446124,  0.43143336, ...,  0.        ,
        -0.49529934, -0.79109411],
       [ 1.52663039,  0.21261276, -0.46633662, ...,  0.        ,
        -0.49529934,  0.02854195]])
In [130]:
from sklearn.decomposition import PCA
In [131]:
pca_df = PCA(n_components=2).fit_transform( Xdf )
pca_df.shape
Out[131]:
(512, 2)
In [132]:
Xdf.shape
Out[132]:
(512, 8)
In [133]:
df_clean_features.shape
Out[133]:
(512, 8)
In [134]:
pca_df_df = pd.DataFrame( pca_df, columns=['pc01', 'pc02'] )
pca_df_df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 512 entries, 0 to 511
Data columns (total 2 columns):
 #   Column  Non-Null Count  Dtype  
---  ------  --------------  -----  
 0   pc01    512 non-null    float64
 1   pc02    512 non-null    float64
dtypes: float64(2)
memory usage: 8.1 KB
In [135]:
pca_df_df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 512 entries, 0 to 511
Data columns (total 2 columns):
 #   Column  Non-Null Count  Dtype  
---  ------  --------------  -----  
 0   pc01    512 non-null    float64
 1   pc02    512 non-null    float64
dtypes: float64(2)
memory usage: 8.1 KB
In [136]:
sns.relplot(data = pca_df_df, x='pc01', y='pc02')

plt.show()
In [137]:
fig, ax = plt.subplots()

sns.heatmap( pca_df_df.corr(numeric_only=True),
             vmin=-1, vmax=1, center=0,
             cmap='coolwarm',
             annot=True, annot_kws={'fontsize': 20}, fmt='.1f',
             ax=ax)

plt.show()
In [138]:
sns.lmplot(data = pca_df_df, x='pc01', y='pc02')

plt.show()
In [139]:
pca_df_df['return_next_season'] = df_clean.return_next_season
In [140]:
sns.lmplot(data = pca_df_df, x='pc01', y='pc02', hue='return_next_season')

plt.show()
  • There are 512 observations in the cluster. The clusters have 509 and 3 values.
  • The clusters are not balanced.
  • The visualization is easier with the previous one than PCA.
  • I was not able to get the optimal number of clusters using the knee bend plot, as I couldn't identify the bend.
  • No, the identified clusters are not consistent with the outcome.
  • I've used trend plot to visualize the conditional distribution of the variable. Using this plot, I can't make the analysis. All the points are on the 0 mark so I can't make a concrete analysis.